Attributes may be transferred from a geometric surface having one topology, such as a polygon mesh, to another geometric surface of a different topology, such as a different polygon mesh. Example attributes that may be transferred include, but are not limited to, color, texture coordinates, animation values and rendering values that may be associated with a vertex, edge, face or face corner (also called a face-vertex pair or polygon nodes).
Attribute transfer is commonly used in the context of the creation of three dimensional (3D) objects for realistic visual entertainment, such as video games and films. Such 3D objects are defined by 3D geometric surfaces that typically have many associated attributes, such as texture coordinates, high quality textures, specular maps, normal maps, face materials, animation shapes and deformation weights.
To produce such entertainment, artists often design many similar 3D objects and create similar surface attributes and animation data for each of them. As an example, artists may have to design many characters, and create for each of them various actions, e.g., stand, sit, run, various expressions, e.g., smile, close eyes, say “A”, and various colors and textures, e.g., normal maps, specular maps, surface parameterization for texture coordinates. However, because the topologies of the characters are often different, e.g., different number of polygons or different assembly, all the surface attributes often are created separately for each object. Artists also may create the same character at different levels of detail, each of which might have different topologies, but for which the surface attributes should be similar.
While some techniques are available for creating a new topology from an existing topology in a manner that preserves attribute discontinuities, such as subdivision surfaces and polygon reduction, such techniques are not applicable for transferring attributes between geometric surfaces of arbitrary topologies. In some cases, an artist will want to separately define the topologies of the higher and the lower resolution models. In these cases, there is no intrinsic relationship between the topologies of the models at different resolutions.
Where a specific relationship between two topologies is understood, it is also possible to transfer attributes by taking advantage of the known relationships. For example, one may register manually a correspondence between shapes. As another example, some tools permit texture coordinates to be created on a polygon mesh based on implicit spatial parameterizations defined by a specific implicit geometry, such as a cube or cylinder, or geometries having an implicit UV parametrization, such as a single NURBS surface. Neither of these techniques is generally applicable to transferring attributes between geometric surfaces of arbitrary topologies. Further, registration techniques often introduce distortions in the target geometry to force matching to the source geometry.
However, to transfer attributes between geometric surfaces of arbitrary topologies, one generally aligns the surfaces as closely as possible in three-dimensional space. Next, for all anchor points for attributes in the target geometry, the closest surface or closest vertex in the source geometry is determined. Given the closest surface or vertex locations on the source geometry, the surface attribute values at these locations are computed, optionally by interpolating between the closest anchor points for the surface attributes in the source geometry.
While this technique works with geometric surfaces of different topologies, and can be computed efficiently, it has several problems which make it less useful in practical applications. Two of these problems are distortion artifacts and surface attribute discontinuities.
Distortion artifacts may arise due to the nature of the closest surface and closest vertex calculations between the source and target geometries. Such distortion cannot be avoided in general, and generally arise around convex and concave portions of the surfaces.
A surface attribute discontinuity is a sharp variation of an attribute relative to the surface. An example is a well-defined frontier between two colors. In general, on a polygon mesh, attribute discontinuities define paths made of one or more connected edges. Discontinuity paths can intersect at vertices. Surface attribute discontinuities and their intersections often define visually important features. The general closest surface and closest vertex algorithms will not necessarily preserve such surface attribute discontinuities